<?php
function ValidationInit(){}

function cpf($value)
{
	//Retira os formatos
	$strCPF = preg_replace('/[^0-9]/', '', $value);
	$error = '';
	//Verifica o tamanho
	if (strlen($strCPF)<>11) {
		return false;
	} else {

		//Verifica se todos digitos sao iguais. Ex: 11111111111
		for ($i = 0; $i < 10; $i++){
			if ($strCPF == str_pad('', 11, $i)){
				return false;
			}
		}

		//Verifica primeiro digito verificador
		$intSoma = 0;
		for ($i = 1; $i < strlen($strCPF) - 1; $i++) {
			$intSoma += ((int) $strCPF[$i - 1]) * (strlen($strCPF) - $i);
		}

		$intDv = 11 - ($intSoma % 11);
		if ($intDv >= 10) {
			$intDv = 0;
		}
		if ($intDv <> ((int) $strCPF[strlen($strCPF) - 2])) {
			return false;
		} else {

			//Verifica segundo digito verificador
			$intSoma = 0;
			for ($i = 1; $i < strlen($strCPF); $i++) {
				$intSoma += ((int) $strCPF[$i - 1]) * (strlen($strCPF) - $i + 1);
			}
			$intDv = 11 - ($intSoma % 11);
			if ($intDv >= 10) {
				$intDv = 0;
			}
			return  $intDv == ((int) $strCPF[strlen($strCPF) - 1]);
		}
	}
}

function cnpj($value)
{
	//Retira os formatos
	$strCNPJ = preg_replace('/[^0-9]/', '', $value);
	$error = '';
	//Verifica o tamanho
	if (strlen($strCNPJ)<>14) {
		return false;
	} else {
		//Verifica se todos digitos são iguais. Ex: 11111111111111
		for ($i = 0; $i < 10; $i++){
			if ($strCNPJ == str_pad('', 14, $i)){
				return false;
			}
		}
		//Verifica primeiro dígito verificador
		$intSoma = 0;
		for ($i = 1; $i < strlen($strCNPJ) - 1; $i++) {
			$intSoma += ((int) $strCNPJ[$i - 1]) * (((strlen($strCNPJ) - 2 - $i) % 8) + 2);
		}
		$intDv = 11 - ($intSoma % 11);
		if ($intDv >= 10) {
			$intDv = 0;
		}
		if ($intDv <> ((int) $strCNPJ[strlen($strCNPJ) - 2])) {
			return false;
		} else {
			//Verifica segundo dígito verificador
			$intSoma = 0;
			for ($i = 1; $i < strlen($strCNPJ); $i++) {
				$intSoma += ((int) $strCNPJ[$i - 1]) * (((strlen($strCNPJ) - 1 - $i) % 8) + 2);
			}
			$intDv = 11 - ($intSoma % 11);
			if ($intDv >= 10) {
				$intDv = 0;
			}
			return  $intDv == ((int) $strCNPJ[strlen($strCNPJ) - 1]);
		}
	}
}

/**
 * Formata um texto com a mascara de CNPJ (00.000.000/0000-00).
 * @param $strCNPJ: Input que será formatado
 */
function formataCnpj($strCNPJ)
{
	$strCNPJ = preg_replace('/[^0-9]/', '', $strCNPJ);
	if (strlen($strCNPJ) > 14)
	$strCNPJ = substr($strCNPJ, 0, 14);
	if (strlen($strCNPJ) > 12)
	$strCNPJ = substr($strCNPJ, 0, 12) . '-' . substr($strCNPJ, 12);
	if (strlen($strCNPJ) > 8)
	$strCNPJ = substr($strCNPJ, 0, 8) . '/' . substr($strCNPJ, 8);
	if (strlen($strCNPJ) > 5)
	$strCNPJ = substr($strCNPJ, 0, 5) . '.' . substr($strCNPJ, 5);
	if (strlen($strCNPJ) > 2)
	$strCNPJ = substr($strCNPJ, 0, 2) . '.' . substr($strCNPJ, 2);
	return $strCNPJ;
}

/**
 * Formata um texto com a mascara de CPF (000.000.000-00).
 * @param $strCPF: Input que sera formatado
 */
function formataCpf($strCPF)
{
	$strCPF = preg_replace('/[^0-9]/', '', $strCPF);
	if (strlen($strCPF) > 11)
	$strCPF = substr($strCPF, 0, 11);
	if (strlen($strCPF) > 9)
	$strCPF = substr($strCPF, 0, 9) . '-' . substr($strCPF, 9);
	if (strlen($strCPF) > 6)
	$strCPF = substr($strCPF, 0, 6) . '.' . substr($strCPF, 6);
	if (strlen($strCPF) > 3)
	$strCPF = substr($strCPF, 0, 3) . '.' . substr($strCPF, 3);
	return $strCPF;
}

/**
 * Formata um texto com a mascara de Telefone (0000-0000).
 * @param $strTelefone: Input que sera formatado
 */
function formataTelefone($strTelefone)
{
	$strTelefone = preg_replace('/[^0-9]/', '', $strTelefone);
	if (strlen($strTelefone) > 8)
	$strTelefone = substr($strTelefone, 0, 8);
	if (strlen($strTelefone) > 4)
	$strTelefone = substr($strTelefone, 0, 4) . '-' . substr($strTelefone, 4);
	return $strTelefone;
}

/**
 * Formata um texto com a mascara de Cep (00.000-00).
 * @param $strCep: Input que sera formatado
 */
function formataCep($strCep)
{
	$strCep = preg_replace('/[^0-9]/', '', $strCep);
	if (strlen($strCep) > 8)
	$strCep = substr($strCep, 0, 8);
	if (strlen($strCep) > 2)
	$strCep = substr($strCep, 0, 2) . '.' . substr($strCep, 2);
	if (strlen($strCep) > 6) //considera os 5 digitos mais o ponto
	$strCep = substr($strCep, 0, 6) . '-' . substr($strCep, 6);
	return $strCep;
}